import { getRoleList, getDepartList } from '@/api/user'

/** *
 * 节流函数 在wait间隔时间内不再进行任何调用时，触发一次最后的调用（如:wait设置为300ms，一直点击，该函数一直不执行，只有在间隔了300ms不做任何点击后，才执行刚才的最后一次点击）
 * @ func 执行函数
 * @ wait 等待时间
 * @ {Boolean} immediate 是否立即执行
 * @return {Function}
 */
export function throttle(func, wait, immediate) {
  console.log('%cthrottle', 'color:green;font-size:18px;')
  var timeout
  return function() {
    const context = this
    const args = arguments
    const later = function() {
      timeout = null
      if (!immediate) func.apply(context, args)
    }
    const callNow = immediate && !timeout
    clearTimeout(timeout)
    timeout = setTimeout(later, wait)
    if (callNow) func.apply(context, args)
  }
}

/**
 * 函数防抖
 */
export function debounce(fn, delay) {
  // 记录上一次的延时器
  var timer = null
  var delay = delay || 200
  return function() {
    var args = arguments
    var that = this
    // 清除上一次延时器
    clearTimeout(timer)
    timer = setTimeout(function() {
      fn.apply(that, args)
    }, delay)
  }
}

// 获取角色列表函数
export function getRoleInfo() {
  return new Promise(resolve => {
    getRoleList().then(res => {
      resolve(res.data)
    })
  })
}

// 获取部门函数
export function getDepartInfo() {
  return new Promise(resolve => {
    getDepartList().then(res => {
      resolve(res.data)
    })
  })
}

// 检查对象中的所有属性值是否为空
export function obj_is_null(obj) {
  for (const key in obj) {
    if (key != 'page') {
      if (key != 'limit') {
        if (!obj[key]) {
				    // console.log('除去page与limit有一项为空')
        } else {
          return true
        }
      }
    }
  }
}
